package org.zhadoop.stream.api.opereators;

import org.zhadoop.streaming.application.DistributeType;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamOmitField;

/**
 * 各种Operator的连接关系
 * 定义了从一个operator到另一个operator的连接
 * 
 * 1、同一个spout，输出流名称必须相同
 * 2、同一个算子输出流名称可以一样
 * 3、同一个算子，输入流的名称不允许重复
 * 4、不同的算子，流名称必然不一样
 * 5、同一个算子，分发特征可以不一样，但是schema名称和流名称必须一样
 * 
 * @author zwd
 *
 */
public class OperatorTranstion {
	
	/**
	 * 当前的连接的id,每个连接的id都不相同
	 * 每个id之间用id来进行比较
	 * id不能为空，CQL 客户端和IDE客户端都会用到
	 */
	@XStreamAsAttribute
	@XStreamOmitField
	private String id;
	
	/**
	 * 流名称
	 */
	@XStreamAsAttribute
	@XStreamAlias("name")
	private String streamName;
	
	/**
	 * 发起连接的Operator id
	 */
	@XStreamAsAttribute
	@XStreamAlias("from")
	private String fromOperatorId;
	
	/**
	 * 接收连接的Operator id
	 */
	@XStreamAsAttribute
	@XStreamAlias("to")
	private String toOperatorId;
	
	/**
	 * 数据的分发字段
	 * 仅在distributedType 为field的时候生效
	 */
	@XStreamAsAttribute
	private DistributeType distributedType;
	
	/**
	 * 流上进行数据传输的时候的schema名称
	 */
	@XStreamAsAttribute
	private String schemaName;
	
}
